const crypto = require('crypto');




const noCheckKey = [
    'external_temp_coeff_TG56'
]

export const mockStandrdData = {
    // "cidFile": {
    //     min: 'xx',
    //     max: 'xx'
    // },
    // "sntpServer": {
    //     min: 'xx',
    //     max: 'xx'
    // },
    "external_temp_coeff_TG56": {
        min: 1,
        max: 1
    },
    "external_temp_coeff_TG40": {
        min: 20,
        max: 60
    },
    "external_temp_coeff_TG24": {
        min: 200,
        max: 400
    },
}

/**
 * 解析行文件，转成map格式
 * @param {*} data 
 * @returns 
 */
export const parseFiles = (inpuData, fileName) => {
    // 使用正则表达式匹配文件后缀
    const isINI = /\.ini$/.test(fileName);
    const isBKP = /\.bkp$/.test(fileName);
    const keyValuePairs = {};
    // 1 代bkp文件 
    if (isBKP) {
        // 逐行解析文件内容
        const lines = inpuData.split('\n');
        
        lines.forEach(line => {
            const [address, data] = line.trim().split(/\s+/); 
            keyValuePairs[address] = data
        });
    }

    // 2 代 ini文件
    if (isINI) {
        // 逐行解析文件内容
        const lines = inpuData.split('\n');
        lines.forEach(line => {
            // 去除首尾空格并分割等号左右两边的值
            const [key, value] = line.trim().split('=');
            // 如果存在键和值，则将其放入数组中
            if (key && value) {
                keyValuePairs[key.trim()] = value.trim();
            }
        });
    }
    return keyValuePairs; 
}

// 检验文件中的指标值是否在标准范围内
export const checkFiles = (guizeRes, keyValuePairs) => {
    const errorArray = [];
    const okArray = [];
    guizeRes.forEach((item:any) => {
        const { key, min, equal } = item;
        if (Number(keyValuePairs[key])=== Number(equal)) {
            okArray.push({ key, value: equal, status: '0',  expected: equal,remarks:''});
        } else {
            errorArray.push({ key, value: keyValuePairs[key], status: '1', expected: equal,remarks:'' });
        }
    })
    const allObj = {
        'checkStatus': errorArray.length >= 1 ? '1' : '0',
        'checkData': [...errorArray, ...okArray],
        'checkPerson':'', // 站长
    }
    return allObj
}


// 生成文件ID（fileId）函数
export const generateFileId = (data) =>  {
    const hash = crypto.createHash('md5').update(data).digest('hex');
    return hash;
}


// module.exports = {
//     parseFiles,
//     checkFiles,
//     generateFileId,
//     noCheckKey,
//     mockStandrdData
// };